"""
    定义员工模型类（实例变量：姓名、岗位、薪资）
    定义员工视图类
        定义显示菜单函数
        定义选择菜单函数
        定义录入员工函数（姓名、岗位、薪资）
        定义查看员工函数（姓名、岗位、薪资）
        定义删除员工函数（姓名）依靠姓名删除
        定义更新员工函数（岗位、薪资）依靠姓名更新

    定义员工视图类
        定义列表
        定义添加员工函数
        定义删除员工函数
        定义修改员工函数
"""


# 模型层
class DepModel:
    def __init__(self, name, job, salary):
        self.name = name
        self.job = job
        self.salary = salary
    def display(self):
        print(f"{self.name}的岗位是{self.job},薪资是{self.salary}")

# 视图层
class DepView:
    def __init__(self):
        self.__controller=DepController()

    #公共方法
    def main(self):
        while True:
            self.__display_menu()
            self.__select_menu()

    # 显示菜单 私有方法
    def __display_menu(self):
        print("按1添加员工")
        print("按2显示员工")
        print("按3删除员工")
        print("按4修改员工")

    # 选择菜单
    def __select_menu(self):
        num=input("请选择：")
        if num == "1":
            self.__input_dep()
        elif num == "2":
            self.__display_dep()
        elif num == "3":
            self.__del_dep()
        elif num == "4":
            self.__update_dep()


    # 录入员工
    def __input_dep(self):
        model = DepModel(
            input("请输入姓名："),
            input("请输入岗位："),
            float(input("请输入薪资："))
        )
        #内容放到列表中保存 ==>存储==>C层
        #对象.方法 add_emp()
        #c层的对象.add_emp(model)
        self.__controller.add_emp(model)

    # 选择员工
    def __select_dep(self):
        pass

    # 显示员工
    def __display_dep(self):
        #self ==> v层对象
        #有 __controller.list_employees属性，它的值是对象
        #那个对象中有list_employees属性，它的值是列表
        for item in self.__controller.list_employees:
            #vars：返回对象的属性和值组成的字典对象
            print(vars(item))
            item.display()


    # 删除员工
    def __del_dep(self):
        name = input("请输入员工姓名：")
        #c层对象.remove_emp(name)
        if self.__controller.remove_emp(name):
            print("删除成功！")
        else:
            print("删除失败！")

    # 更新员工
    def __update_dep(self):
        name=input("请输入修改的员工姓名：")
        model=DepModel(
            name,  # 这里使用原来的姓名
            input("请输入员工新岗位："),
            float(input("请输入员工新薪资："))
        )
        if not self.__controller.modify_emp(name, model):
            print("修改失败！")
        else:
            print("修改成功！")


# 控制层
class DepController:
    def __init__(self):
        self.list_employees=[]

    # 添加
    def add_emp(self,model):
        self.list_employees.append(model)

    # 删除
    def remove_emp(self,name):
        # for item in self.list_employees:
        #     if item.name == name:
        #         self.list_employees.remove(item)
        for i in range(len(self.list_employees)):
            if self.list_employees[i].name == name:
                del self.list_employees[i]
                return True
        return False

    # 修改
    def modify_emp(self, name, model):
        for item in self.list_employees:
            if item.name == name:
                #内置属性 存储对象的属性（实例变量）的字典表示
                item.__dict__=model.__dict__
                return True
        return False




#程序开始的地方
c1 = DepView()
c1.main()